home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1994 November / macformat-018.iso / Utility Spectacular / Developer / macgambit-20-compiler-src-p1 / Runtime (.c & .h) / os.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-07-26  |  2.8 KB  |  67 lines  |  [TEXT/KAHL]

  1. #ifdef butterfly
  2. #define read_and_clear(adr,var)     { var = (long)atomand32((long *)(adr),0); }
  3. #define read_and_set(adr,var)       { var = (long)atomior32((long *)(adr),-1); }
  4. #define read_and_lock(adr,var)      { long temp; while ((temp=(long)atomior32((long *)(adr),-1))==-1); var = temp; }
  5. #define unlock(adr,val)             { *((long *)(adr)) = (long)(val); }
  6. #define store_and_unlock(adr,val)   { *((long *)(adr)) = (long)(val); }
  7. #define spin_lock_set(adr)          { while (atomior32((long *)(adr),-1)<0); }
  8. #define spin_lock_reset(adr)        { *((long *)(adr)) = 0; }
  9. #else
  10. #define read_and_clear(adr,var)     { var = *((long *)(adr)); *((long *)(adr)) = 0; }
  11. #define read_and_set(adr,var)       { var = *((long *)(adr)); *((long *)(adr)) = -1; }
  12. #define read_and_lock(adr,var)      { var = *((long *)(adr)); }
  13. #define unlock(adr,val)             { }
  14. #define store_and_unlock(adr,val)   { *((long *)(adr)) = (long)(val); }
  15. #define spin_lock_set(adr)          { *((long *)(adr)) = -1; }
  16. #define spin_lock_reset(adr)        { *((long *)(adr)) = 0; }
  17. #endif
  18.  
  19. typedef long OS_FILE;
  20.  
  21. extern OS_FILE os_stdin, os_stdout, os_stderr;
  22. extern long os_M68020, os_M68881;
  23. extern char *os_err;
  24.  
  25. extern void os_file_printf( /* f, str, val */ );
  26. extern void os_warn( /* msg, val */ );
  27. extern void os_notify_gc_begin( /* id, report */ );
  28. extern void os_notify_gc_end( /* id, heap_mid, heap_bot, free_bot, free_top, report */ );
  29.  
  30. extern void os_quit();
  31. extern long os_nb_processors();
  32. extern long os_fork_on_processors( /* n */ );
  33.  
  34. extern void os_shared_malloc8( /* len, processor, cont */ );
  35. extern void os_shared_copy_malloc8( /* len_share, len_copy, processor, cont */ );
  36. extern void os_block_copy( /* src, dst, len */ );
  37. extern void os_flush_caches();
  38. extern void os_flush_writes();
  39.  
  40. extern long os_clock();
  41. extern long os_real_time_clock();
  42. extern long os_clock_to_msec( /* ticks */ );
  43. extern void os_cpu_times( /* buf */);
  44. extern void os_profil( /* buff, bufsiz, offset, scale */ );
  45. extern long os_ticks_to_msec( /* ticks */ );
  46.  
  47. extern void os_install_trap_handlers( /* intr_proc, timer_proc, io_proc, fatal_proc */ );
  48. extern void os_set_timer_interval( /* interval */ );
  49.  
  50. extern long os_get_next_event( /* event */ );
  51. extern long os_handle_event( /* event */ );
  52.  
  53. extern char *os_expand_filename( /* name */ );
  54. extern OS_FILE os_file_open_input( /* name */ );
  55. extern OS_FILE os_file_open_output( /* name */ );
  56. extern OS_FILE os_file_open_input_output( /* name */ );
  57. extern long os_file_length( /* f */ );
  58. extern long os_file_read_ready( /* f */ );
  59. extern long os_file_write_ready( /* f */ );
  60. extern void os_file_block_read( /* f */ );
  61. extern void os_file_block_write( /* f */ );
  62. extern long os_file_read( /* f, ptr, n */ );
  63. extern long os_file_write( /* f, ptr, n */ );
  64. extern long os_file_close( /* f */ );
  65.  
  66. extern void ext_init();
  67.